home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / C Internet Config / IC Application Source ƒ / C Source ƒ / IC Globals.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-28  |  2.8 KB  |  125 lines  |  [TEXT/SPM ]

  1. /*
  2.     IC Globals.c
  3.     
  4.     Defines globals used by the application.
  5.     
  6. */
  7.  
  8. #include <Errors.h>
  9. #include <Processes.h>
  10. #include <Components.h>
  11. #include <GestaltEqu.h>
  12. #include <Resources.h>
  13. #include <ToolUtils.h>
  14. #include <Dialogs.h>
  15.  
  16. #include "IC Globals.h"
  17. #include "IC Misc Subs.h"
  18.  
  19. Boolean System7=false;
  20. Boolean Has_AppleEvents=false;
  21. Boolean Has_FindFolder=false;
  22. Boolean Has_AliasMgr=false;
  23. Boolean Has_NewStdFile=false;
  24. Boolean Has_HelpMgr=false;
  25. Boolean Has_ColorQD=false;
  26. Boolean Has_Components=false;
  27.  
  28. short app_resfile;
  29. FSSpec app_fs;
  30. Boolean in_foreground=true;
  31. Boolean quitnow=false;
  32. VersRec app_version;
  33.  
  34. #define GestaltAttr(feature,attr) BitTst((feature),(31-(attr)))
  35.  
  36. Boolean CheckGestalt(OSType selector,short attr){
  37.     OSErr err;
  38.     long gv;
  39.     
  40.     err=Gestalt(selector,&gv);
  41.     
  42.     if (err!=noErr)
  43.         return false;
  44.     
  45.     return GestaltAttr(&gv,attr);
  46. }
  47.  
  48. void InitGlobals(void){
  49.     OSErr err;
  50.     long gv;
  51.     FCBPBRec pb;
  52.     SysEnvRec sysenv;
  53.     VersRecHndl versh;
  54.     
  55.     app_resfile=CurResFile();
  56.     
  57.     pb.ioNamePtr=app_fs.name;
  58.     pb.ioVRefNum=0;
  59.     pb.ioRefNum=app_resfile;
  60.     pb.ioFCBIndx=0;
  61.     
  62.     err=PBGetFCBInfoSync(&pb);
  63.     
  64.     app_fs.vRefNum=pb.ioFCBVRefNum;
  65.     app_fs.parID=pb.ioFCBParID;
  66.     
  67.     if ((SysEnvirons(1,&sysenv)==noErr)&&(sysenv.hasColorQD))
  68.         Has_ColorQD=true;
  69.     
  70.     if ((Gestalt(gestaltSystemVersion,&gv)==noErr)&&(gv>=0x0700))
  71.         System7=true;
  72.     
  73.     Has_AppleEvents=CheckGestalt(gestaltAppleEventsAttr,gestaltAppleEventsPresent);
  74.     Has_FindFolder=CheckGestalt(gestaltFindFolderAttr,gestaltFindFolderPresent);
  75.     Has_NewStdFile=CheckGestalt(gestaltStandardFileAttr,gestaltStandardFile58);
  76.     Has_HelpMgr=CheckGestalt(gestaltHelpMgrAttr,gestaltHelpMgrPresent);
  77.     Has_AliasMgr=CheckGestalt(gestaltAliasMgrAttr,gestaltAliasMgrPresent);
  78.     
  79.     if ((Gestalt(gestaltComponentMgr,&gv)==noErr)&&(gv>0))
  80.         Has_Components=true;
  81.     
  82.     versh=(VersRecHndl)Get1Resource('vers',1);
  83.     if (versh!=(VersRecHndl)0){
  84.         DetachResource((Handle)versh);
  85.         HLock((Handle)versh);
  86.         BlockMoveData((Ptr)*versh,(Ptr)&(app_version),sizeof(VersRec));
  87.         HUnlock((Handle)versh);
  88.         DisposeHandle((Handle)versh);
  89.     } else {
  90.         long* lp=(long*)&(app_version.numericVersion);
  91.         
  92.         *lp=0L;
  93.         // app_version.numericVersion=0L;
  94.         app_version.countryCode=0;
  95.         app_version.shortVersion[0]=0;
  96.     }
  97. }
  98.  
  99. Boolean InForeground(void){
  100.     long gv;
  101.     ProcessSerialNumber ourpsn,frontpsn;
  102.     Boolean front;
  103.     
  104.     if (CheckGestalt(gestaltOSAttr,gestaltLaunchControl)){
  105.         if ((GetCurrentProcess(&ourpsn)==noErr)&&(GetFrontProcess(&frontpsn)==noErr)){
  106.             if (SameProcess(&ourpsn,&frontpsn,&front)==noErr)
  107.                 in_foreground=front;
  108.         }
  109.     }
  110.     
  111.     return in_foreground;
  112. }
  113.  
  114. void DisplayError(ICAction action,OSErr err){
  115.     Str255 tmp,tmp2;
  116.     
  117.     if ((err!=noErr)&&(err!=userCanceledErr)){
  118.         InitCursor();
  119.         GetIndString(tmp,131,action+1);
  120.         NumToString(err,tmp2);
  121.         ParamText(tmp,tmp2,"\p","\p");
  122.         StopAlert(140,(ModalFilterUPP)0);
  123.     }
  124. }
  125.